#coding=utf-8

'''
Created on 2011-8-30

@author: chris
'''

import pymongo #@UnresolvedImport
from pymongo import Connection #@UnresolvedImport
import datetime
from copy import deepcopy
import sys

sys.path.append('/harvester/ripper/source/src/')

# 添加www.tabletennisdb.com数据采集模板
def add_item_ttbdb():
    conn = Connection()
    db = conn['harvester']
    collection = db['item']
    collection.remove({'name' : 'tabletennisdb'})
    
    item = {
            
         # 基本信息
         'name' : 'tabletennisdb'   ,
         'indexPage' :'http://www.tabletennisdb.com/blade/',
         'collection' : 'data_blade',  # 保存到collection
         'resource' : {
                        'root' : 'h:/resource', # 下载资源文件根目录
                        'image' : 'images',
                        'files' : 'files',
                       },
         'pageControl' : {
                          'start' : 1,
                          'end'   : 1,
                          'limit' : -1,
                          },
         
         # 采集页面
         'pages' : [
                {
                 'name' :  u'PAGE_INDEX', 
                 'desc' :  u'列表页',
                 'url'  :  u'http://www.tabletennisdb.com/blade/',
                },
                {
                 'name' :  u'PageBladeDetail', 
                 'desc' :  u'球拍详细页面',
                 'url'  :  None,
                },
          ], # end of pages
            
          # 采集属性  
          'properties' : [
              {
               'name' : 'bladeDetailUrl', 
               'desc' : u'球拍详细页面URL', 
               'type' : 'KEY_PROPERTY',    # 从列表方法中获取,作为唯一标识的属性, 默认为string类型
               'page' : 'PAGE_INDEX',
               }, 
               {
               'name' : 'bladeName', 
               'desc' : u'球拍名称', 
               'type' : 'string',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'bladeBrandName', 
               'desc' : u'球拍品牌名称', 
               'type' : 'string',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'collectDate',
               'desc' : u'采集时间', 
               'type' : 'datetime',
               'page' : 'aisexDetail',
               }, 
               {
               'name' : 'speedFromManufacturer',
               'desc' : u'产商-速度', 
               'type' : 'string',
               'page' : 'PageBladeDetail',
               }, 
               {
               'name' : 'controlFromManufacturer',
               'desc' : u'产商-控制', 
               'type' : 'string',
               'page' : 'PageBladeDetail',
               }, 
               {
               'name' : 'weightFromManufacturer',
               'desc' : u'产商-重量', 
               'type' : 'string',
               'page' : 'PageBladeDetail',
               }, 
               {
               'name' : 'speedFromCommunity',
               'desc' : u'社区-速度', 
               'type' : 'string',
               'page' : 'PageBladeDetail',
               }, 
               {
               'name' : 'controlFromCommunity',
               'desc' : u'社区-控制', 
               'type' : 'string',
               'page' : 'PageBladeDetail',
               }, 
               {
               'name' : 'stiffnessFromCommunity',
               'desc' : u'社区-弹性', 
               'type' : 'string',
               'page' : 'PageBladeDetail',
               }, 
               {
               'name' : 'hardnessFromCommunity',
               'desc' : u'社区-硬度', 
               'type' : 'string',
               'page' : 'PageBladeDetail',
               }, 
               {
               'name' : 'consistencyFromCommunity',
               'desc' : u'社区-持续性', 
               'type' : 'string',
               'page' : 'PageBladeDetail',
               }, 
               {
               'name' : 'overallFromCommunity',
               'desc' : u'社区-综合', 
               'type' : 'string',
               'page' : 'PageBladeDetail',
               'misc' : 'CCHECK',  # 表示该属性作为完整性检查的属性
               }, 
               {
               'name' : 'pliesFromCommunity',
               'desc' : u'社区-pliesFromCommunity', 
               'type' : 'string',
               'page' : 'PageBladeDetail',
               }, 
               {
               'name' : 'materialsFromCommunity',
               'desc' : u'社区-materialsFromCommunity', 
               'type' : 'string',
               'page' : 'PageBladeDetail',
               }, 
               {
               'name' : 'headThicknessFromCommunity',
               'desc' : u'社区-headThicknessFromCommunity', 
               'type' : 'string',
               'page' : 'PageBladeDetail',
               }, 
               {
               'name' : 'headDimensionsFromCommunity',
               'desc' : u'社区-headDimensionsFromCommunity', 
               'type' : 'string',
               'page' : 'PageBladeDetail',
               }, 
               {
               'name' : 'handleDimensionsFromCommunity',
               'desc' : u'社区-handleDimensionsFromCommunity', 
               'type' : 'string',
               'page' : 'PageBladeDetail',
               }, 
               {
               'name' : 'bladePrice',
               'desc' : u'球拍价格', 
               'type' : 'float',
               'page' : 'PageBladeDetail',
               }, 
               {
               'name' : 'bladePicture', 
               'desc' : u'球拍图片', 
               'type' : 'image',         # 图片类型
               'page' : 'PageBladeDetail',
               },            
               {
               'name' : 'bladeReviews', 
               'desc' : u'评论', 
               'type' : 'string[]',         # 数组列表
               'page' : 'PageBladeDetail',
               },            
          ], #end of properties
            
         'modifyTime' : datetime.datetime.utcnow(), 
    }
    collection.insert(item)
    return

# www.aisex.com 亚洲区
def add_item_aisex_asia():
    conn = Connection()
    db = conn['harvester']
    collection = db['item']
    
    item = {
            
         # 基本信息
         'name' : 'aisex_asia'   ,
         'indexPage' :'http://www.aisex.com/bt/thread.php?fid=4',
         'collection' : 'data_aisex',  # 保存到collection
         'resource' : {
                        'root' : 'h:/resource', # 下载资源文件根目录
                        'image' : 'images_aisex',
                        'thumbnail' : 'thumbnail',
                        'file' : 'files',
                       },
         'pageControl' : {
                          'start' : 1,
                          'end'   : 10,
                          'limit' : -1,
                          },
         
         # 采集页面
         'pages' : [
                {
                 'name' :  u'PAGE_INDEX', 
                 'desc' :  u'帖子列表页',
                 'url'  :  u'http://www.aisex.com/bt/thread.php?fid=4',
                },
                {
                 'name' :  u'aisexDetail', 
                 'desc' :  u'帖子详细页面',
                 'url'  :  None,
                },
          ], # end of pages
            
          # 采集属性  
          'properties' : [
              {
               'name' : 'postDetailUrl', 
               'desc' : u'帖子详细页面URL', 
               'type' : 'KEY_PROPERTY',    # 从列表方法中获取,作为唯一标识的属性, 默认为string类型
               'page' : 'PAGE_INDEX',
               }, 
               {
               'name' : 'title', 
               'desc' : u'帖子标题', 
               'type' : 'string',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'titleSimple', 
               'desc' : u'帖子标题_简体', 
               'type' : 'string',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'postDate', 
               'desc' : u'发布日期', 
               'type' : 'string',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'postDateTime', 
               'desc' : u'发布日期_时间类型', 
               'type' : 'date',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'author', 
               'desc' : u'发布者', 
               'type' : 'string',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'forumId',
               'desc' : u'论坛板块ID', 
               'type' : 'int',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'collectDate',
               'desc' : u'采集时间', 
               'type' : 'datetime',
               'page' : 'aisexDetail',
               }, 
               {
               'name' : 'ccontent',
               'desc' : u'帖子内容', 
               'type' : 'string',
               'page' : 'aisexDetail',
               'misc' : 'CCHECK',  # 表示该属性作为完整性检查的属性
               }, 
               {
               'name' : 'rawContent',
               'desc' : u'帖子原始html内容', 
               'type' : 'string',
               'page' : 'aisexDetail',
               }, 
               {
               'name' : 'urls', 
               'desc' : u'帖子相关url', 
               'type' : 'string[]',         
               'page' : 'aisexDetail',
               },            
               {
               'name' : 'images', 
               'desc' : u'帖子相关图片', 
               'type' : 'image[]',         
               'page' : 'aisexDetail',
               },            
               {
               'name' : 'torrents', 
               'desc' : u'帖子相关种子', 
               'type' : 'file[]',         
               'page' : 'aisexDetail',
               },            
          ], #end of properties
            
         'modifyTime' : datetime.datetime.utcnow(), 
    }
    
    # 清除配置
    collection.remove({'name' : 'aisex_asia'})
    collection.remove({'name' : 'aisex_euro'})
    collection.remove({'name' : 'aisex_hentai'})
    collection.remove({'name' : 'aisex_game'})
    collection.remove({'name' : 'aisex_pic_euro'})
    collection.remove({'name' : 'aisex_pic_asia'})
    
    # 其他区
    itemEuro = deepcopy(item)
    itemHentai = deepcopy(item)
    itemGame = deepcopy(item)
    itemPicAsia = deepcopy(item)
    itemPicEuro = deepcopy(item)
    
    itemEuro['name'] = 'aisex_euro'
    itemHentai['name'] = 'aisex_hentai'
    itemGame['name'] = 'aisex_game'
    itemPicAsia['name'] = 'aisex_pic_asia'
    itemPicEuro['name'] = 'aisex_pic_euro'
    
    itemEuro['indexPage'] = 'http://www.aisex.com/bt/thread.php?fid=5'
    itemHentai['indexPage'] = 'http://www.aisex.com/bt/thread.php?fid=6'
    itemGame['indexPage'] = 'http://www.aisex.com/bt/thread.php?fid=11'
    itemPicAsia['indexPage'] = 'http://www.aisex.com/bt/thread.php?fid=14'
    itemPicEuro['indexPage'] = 'http://www.aisex.com/bt/thread.php?fid=15'
    
    itemEuro['pages'][0]['url'] = itemEuro['indexPage']
    itemHentai['pages'][0]['url'] = itemHentai['indexPage']
    itemGame['pages'][0]['url'] = itemGame['indexPage']
    itemPicAsia['pages'][0]['url'] = itemPicAsia['indexPage']
    itemPicEuro['pages'][0]['url'] = itemPicEuro['indexPage']
    
    collection.insert(item)
    collection.insert(itemEuro)
    collection.insert(itemHentai)
    collection.insert(itemGame)
    collection.insert(itemPicEuro)
    collection.insert(itemPicAsia)
    
    return

def add_item_uhentai():
    conn = Connection()
    db = conn['harvester']
    collection = db['item']
    
    item = {
            
         # 基本信息
         'name' : 'uhentai'   ,
         'indexPage' :'http://unlimitedhentai.com/hentai/archiveaz/41',
         'collection' : 'data_uhentai',  # 保存到collection
         'resource' : {
                        'root' : 'h:/resource', # 下载资源文件根目录
                        'image' : 'uhentai',
                        'thumbnail' : 'thumbnail',
                        'file' : 'files',
                       },
         'pageControl' : {
                          'start' : 15,
                          'end'   : 15,
                          'limit' : -1,
                          },
         
         # 采集页面
         'pages' : [
                {
                 'name' :  u'PAGE_INDEX', 
                 'desc' :  u'帖子列表页',
                 'url'  :  u'http://unlimitedhentai.com/hentai/archiveaz/41',
                },
                {
                 'name' :  u'uhentaiDetail', 
                 'desc' :  u'帖子详细页面',
                 'url'  :  None,
                },
          ], # end of pages
            
          # 采集属性  
          'properties' : [
              {
               'name' : 'gIndexUrl', 
               'desc' : u'帖子详细页面URL', 
               'type' : 'KEY_PROPERTY',    # 从列表方法中获取,作为唯一标识的属性, 默认为string类型
               'page' : 'PAGE_INDEX',
               }, 
               {
               'name' : 'title', 
               'desc' : u'帖子标题', 
               'type' : 'string',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'pubDate', 
               'desc' : u'发布日期', 
               'type' : 'string',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'titleImage', 
               'desc' : u'标题图片', 
               'type' : 'image',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               'fakeLength' : 9999999,  
               }, 
               {
               'name' : 'author', 
               'desc' : u'发布者', 
               'type' : 'string',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'collectDate',
               'desc' : u'采集时间', 
               'type' : 'datetime',
               'page' : 'aisexDetail',
               }, 
               {
               'name' : 'images', 
               'desc' : u'帖子相关图片', 
               'type' : 'image[]',         
               'page' : 'aisexDetail',
               'misc' : 'CCHECK',
               },            
          ], #end of properties
            
         'modifyTime' : datetime.datetime.utcnow(), 
    }
    
    # 清除配置
    collection.remove({'name' : 'uhentai'})
    
    collection.insert(item)

def add_item_hhentai():
    conn = Connection()
    db = conn['harvester']
    collection = db['item']
    
    item = {
            
         # 基本信息
         'name' : 'hhentai'   ,
         'indexPage' :'http://hentaischool.com/files/category/5-mangas/page__sort_by__DESC__sort_key__file_submitted__num__10__st__',
         'collection' : 'data_hhentai',  # 保存到collection
         'resource' : {
                        'root' : 'h:/resource', # 下载资源文件根目录
                        'image' : 'hhentai',
                        'thumbnail' : 'thumbnail',
                        'file' : 'files',
                       },
         'pageControl' : {
                          'start' : 1,
                          'end'   : 1,
                          'limit' : -1,
                          },
         
         # 采集页面
         'pages' : [
                {
                 'name' :  u'PAGE_INDEX', 
                 'desc' :  u'帖子列表页',
                 'url'  :  u'http://hentaischool.com/files/category/5-mangas/page__sort_by__DESC__sort_key__file_submitted__num__10__st__',
                },
                {
                 'name' :  u'uhentaiDetail', 
                 'desc' :  u'帖子详细页面',
                 'url'  :  None,
                },
          ], # end of pages
            
          # 采集属性  
          'properties' : [
              {
               'name' : 'gIndexUrl', 
               'desc' : u'帖子详细页面URL', 
               'type' : 'KEY_PROPERTY',    # 从列表方法中获取,作为唯一标识的属性, 默认为string类型
               'page' : 'PAGE_INDEX',
               }, 
               {
               'name' : 'title', 
               'desc' : u'帖子标题', 
               'type' : 'string',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'pubDate', 
               'desc' : u'发布日期', 
               'type' : 'string',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'titleImage', 
               'desc' : u'标题图片', 
               'type' : 'image',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'author', 
               'desc' : u'发布者', 
               'type' : 'string',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'collectDate',
               'desc' : u'采集时间', 
               'type' : 'datetime',
               'page' : 'aisexDetail',
               }, 
               {
               'name' : 'images', 
               'desc' : u'帖子相关图片', 
               'type' : 'image[]',         
               'page' : 'aisexDetail',
               'misc' : 'CCHECK',
               },            
          ], #end of properties
            
         'modifyTime' : datetime.datetime.utcnow(), 
    }
    
    # 清除配置
    collection.remove({'name' : 'hhentai'})
    
    collection.insert(item)
    
# sis配置
def add_item_sis():
    conn = Connection()
    db = conn['harvester']
    collection = db['item']
    
    item = {
            
         # 基本信息
         'name' : 'sis_64'   ,
         'desc' : u'东方靓女集中营',
         
         'indexPage' :'http://www.sexinsex.net/forum/forum-64-',
         'collection' : 'data_sis',  # 保存到collection
         'resource' : {
                        'root' : '/resource', # 下载资源文件根目录
                        'image' : 'images_sis',
                        'thumbnail' : 'thumbnail',
                        'file' : 'files',
                       },
         'pageControl' : {
                          'start' : 1,
                          'end'   : 10,
                          'limit' : -1,
                          },
         
         # 采集页面
         'pages' : [
                {
                 'name' :  u'PAGE_INDEX', 
                 'desc' :  u'帖子列表页',
                 'url'  :  u'http://www.sexinsex.net/forum/forum-64-',
                },
                {
                 'name' :  u'aisexDetail', 
                 'desc' :  u'帖子详细页面',
                 'url'  :  None,
                },
          ], # end of pages
            
          # 采集属性  
          'properties' : [
              {
               'name' : 'postDetailUrl', 
               'desc' : u'帖子详细页面URL', 
               'type' : 'ENTRY',    # 强制作为入口    
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',
               }, 
               {
               'name' : 'title', 
               'desc' : u'帖子标题', 
               'type' : 'KEY_PROPERTY',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'titleSimple', 
               'desc' : u'帖子标题_简体', 
               'type' : 'string',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'postDate', 
               'desc' : u'发布日期', 
               'type' : 'string',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'postDateTime', 
               'desc' : u'发布日期_时间类型', 
               'type' : 'date',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'author', 
               'desc' : u'发布者', 
               'type' : 'string',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'forumId',
               'desc' : u'论坛板块ID', 
               'type' : 'int',
               'page' : 'PAGE_INDEX',
               'misc' : 'FROM_LIST',  # 表示该属性已经从列表方法中自动获取
               }, 
               {
               'name' : 'collectDate',
               'desc' : u'采集时间', 
               'type' : 'datetime',
               'page' : 'aisexDetail',
               }, 
               {
               'name' : 'ccontent',
               'desc' : u'帖子内容', 
               'type' : 'string',
               'page' : 'aisexDetail',
               'misc' : 'CCHECK',  # 表示该属性作为完整性检查的属性
               }, 
               {
               'name' : 'rawContent',
               'desc' : u'帖子原始html内容', 
               'type' : 'string',
               'page' : 'aisexDetail',
               }, 
               {
               'name' : 'urls', 
               'desc' : u'帖子相关url', 
               'type' : 'string[]',         
               'page' : 'aisexDetail',
               },            
               {
               'name' : 'images', 
               'desc' : u'帖子相关图片', 
               'type' : 'image[]',         
               'page' : 'aisexDetail',
               'misc' : 'CCHECK',  # 图片区一定需要图片
               },            
               {
               'name' : 'torrents', 
               'desc' : u'帖子相关种子', 
               'type' : 'file[]',         
               'page' : 'aisexDetail',
               },            
          ], #end of properties
            
         'modifyTime' : datetime.datetime.utcnow(), 
    }
    
    
    # 清除配置
    collection.remove({'name' : 'sis_64'})
    collection.remove({'name' : 'sis_62'})
    collection.remove({'name' : 'sis_68'})
    
    # 其他区
    item62 = deepcopy(item)
    item68 = deepcopy(item)
    
    item62['name'] = 'sis_62'
    item62['desc'] = u'网友自拍贴图区'
    item68['name'] = 'sis_68'
    item68['desc'] = u'西洋靓女骚妹'
    
    item62['indexPage'] = 'http://www.sexinsex.net/forum/forum-62-'
    item68['indexPage'] = 'http://www.sexinsex.net/forum/forum-68-'
    
    item62['pages'][0]['url'] = item62['indexPage']
    item68['pages'][0]['url'] = item68['indexPage']
    
    collection.insert(item)
    collection.insert(item62)
    collection.insert(item68)
    
    return

def view():
    conn = Connection()
    db = conn['harvester']
    collection = db['item']
    item = collection.find_one({'name' : 'sis_62'})
    print item
    print item['_id']
    
if __name__ == '__main__':
#    add_item_hhentai()
    add_item_sis()
    view()